//
//  HMEmoticonPackageModel.swift
//  表情键盘
//
//  Created by iOS on 16/9/28.
//  Copyright © 2016年 iOS. All rights reserved.
//

import UIKit

/// 表情包模型,一个表情包模型管理对应这组的所有表情模型
class HMEmoticonPackageModel: NSObject {

    /// 表情包对应的文件夹名称
    var id: String
    
    var group_name_cn: String
    
    /// 所有表情模型
    var emoticons: [HMEmoticonModel]
    
    /// 分好页的数据,一页最多有20个模型([HMEmoticonModel]), 有很多页
    var pageEmoticons = [[HMEmoticonModel]]()
    
    init(id: String, group_name_cn: String, emoticons: [HMEmoticonModel]) {
        self.id = id
        self.group_name_cn = group_name_cn
        self.emoticons = emoticons
        super.init()
        self.splitEmoitcons()
    }
    
    
    /// 将一组表情模型,拆分成多页
    private func splitEmoitcons() {
        // 计算到底要拆分成多少页,已知总数量和每页数量,求页数
        // 3 = 44 + 20 - 1 / 20
        // 2 = 39 + 20 - 1 / 20
        // 2 = (40 + 20 - 1) / 20
        // 3 = (41 + 20 - 1) / 20
        // 总数 + 一页数量 - 1 / 一页数量
        let numberOfPage = (emoticons.count + NumberOfCell - 1) / NumberOfCell
        
        if numberOfPage == 0 {
            // 最近这组,没有数据,使用空的一页
            let pageEmoticon = [HMEmoticonModel]()
            pageEmoticons.append(pageEmoticon)
        }
        
        for i in 0..<numberOfPage { // 0 1 2 3 4 5
            
            // 起始值
            let location = i * NumberOfCell
            
            // 长度最多20个,但是最后一页可能没有那么多
            var length = NumberOfCell
            if location + length > emoticons.count {
                length = emoticons.count - location
            }
            
            let range = NSRange(location: location, length: length)
            
            // 拆分好的一页数组
            let subArray = (emoticons as NSArray).subarray(with: range) as! [HMEmoticonModel]
            pageEmoticons.append(subArray)
        }
    }
    
    override var description: String {
        get {
            return "\n 表情包模型: id: \(id), group_name_cn: \(group_name_cn), pageEmoticons: \(pageEmoticons)"
        }
    }
}
